home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 26 / AACD 26.iso / AACD / System / XFD / Developer / Sources / ASM / -CJ-.a next >
Encoding:
Text File  |  2001-09-16  |  3.2 KB  |  198 lines

  1. *******************************************************
  2. **      XFD external decruncher for -CJ- Cruncher    **
  3. **            written by Phil. in 2000             **
  4. **          fixed by SDI in 2000             **
  5. *******************************************************
  6.  
  7.         INCLUDE    "AINCLUDE:IncDirs.i"
  8.         INCLUDE    "libraries/xfdmaster.i"
  9.  
  10.         * head function for tests
  11. *        INCLUDE    "xfdExeHead.a"
  12.  
  13.  
  14. ForeMan        moveq    #-1,d0
  15.         rts
  16.         dc.l    XFDF_ID            ;id
  17.         dc.w    1            ;version
  18.         dc.w    0
  19.         dc.l    0,0            ;private
  20.         dc.l    S_CJ            ;first slave
  21.  
  22.         dc.b    '$VER: -CJ- 1.1 (26.10.2000) by Psygore',0
  23. N_CJ        dc.b    '(-CJ-) Data Cruncher',0
  24.         CNOP 0,4
  25.  
  26. S_CJ        dc.l    0            ;no more slaves
  27.         dc.w    1            ;version
  28.         dc.w    39            ;master version
  29.         dc.l    N_CJ            ;name
  30.         dc.w    XFDPFF_DATA|XFDPFF_RECOGLEN|XFDPFF_USERTARGET
  31.         dc.w    0            ;max length of special info (passwd)
  32.         dc.l    RB_CJ            ;recog buffer
  33.         dc.l    DB_CJ            ;decrunch buffer
  34.         dc.l    0
  35.         dc.l    0
  36.         dc.w    0,0
  37.         dc.l    4+4+4
  38.  
  39. RB_CJ        MOVEQ    #0,D0
  40.         CMP.L    #'-CJ-',(A0)
  41.         BNE.B    .err
  42.         MOVE.L    4(A0),xfdrr_MinSourceLen(A1)
  43.         MOVE.L    8(A0),D0
  44.         MOVE.L    D0,xfdrr_FinalTargetLen(A1)
  45.         MOVE.L    D0,xfdrr_MinTargetLen(A1)
  46.         MOVEQ    #1,D0
  47. .err        RTS
  48.  
  49. DB_CJ        MOVEM.L    D2-D7/A2-A6,-(A7)
  50.         MOVEA.L    xfdbi_TargetBuffer(A0),A4
  51.         MOVEA.L    A4,A6
  52.         MOVEA.L    xfdbi_SourceBuffer(A0),A5
  53.         ADDA.L    8(A5),A6
  54.         ADDA.L    4(A5),A5
  55.  
  56.         BSR.B    lbC000188
  57.         BSR.B    lbC00015C
  58.  
  59.         MOVEQ    #1,D0
  60.         MOVEM.L    (A7)+,D2-D7/A2-A6
  61.         RTS
  62.  
  63. lbC00015C:
  64.     bsr.b    lbC0001B4
  65.     bcc.b    lbC000182
  66.     moveq    #0,d1
  67.     bsr.b    lbC0001B4
  68.     bcc.b    lbC00017C
  69.     lea    (lbL000262,pc),a1
  70.     moveq    #4,d3
  71. lbC00016C:
  72.     move.l    -(a1),d0
  73.     bsr.b    lbC0001DA
  74.     swap    d0
  75.     cmp.w    d0,d1
  76.     dbne    d3,lbC00016C
  77.     add.l    ($14,a1),d1
  78. lbC00017C:
  79.     move.b    -(a5),-(a6)
  80.     dbra    d1,lbC00017C
  81. lbC000182:
  82.     cmpa.l    a4,a6
  83.     bgt.b    lbC0001E8
  84.     rts
  85.  
  86. lbC000188:
  87.     moveq    #3,d0
  88. lbC00018A:
  89.     move.b    -(a5),d7
  90.     ror.l    #8,d7
  91.     dbra    d0,lbC00018A
  92.     rts
  93.  
  94. lbC000194:
  95.     move.w    a5,d7
  96.     btst    #0,d7
  97.     bne.b    lbC0001A2
  98.     move.l    -(a5),d7
  99.     addx.l    d7,d7
  100.     bra.b    lbC0001E0
  101.  
  102. lbC0001A2:
  103.     move.l    (-5,a5),d7
  104.     lsl.l    #8,d7
  105.     move.b    -(a5),d7
  106.     subq.l    #3,a5
  107.     add.l    d7,d7
  108.     bset    #0,d7
  109.     bra.b    lbC0001E0
  110.  
  111. lbC0001B4:
  112.     add.l    d7,d7
  113.     beq.b    lbC0001BA
  114.     rts
  115.  
  116. lbC0001BA:
  117.     move.w    a5,d7
  118.     btst    #0,d7
  119.     bne.b    lbC0001C8
  120.     move.l    -(a5),d7
  121.     addx.l    d7,d7
  122.     rts
  123.  
  124. lbC0001C8:
  125.     move.l    (-5,a5),d7
  126.     lsl.l    #8,d7
  127.     move.b    -(a5),d7
  128.     subq.l    #3,a5
  129.     add.l    d7,d7
  130.     bset    #0,d7
  131.     rts
  132.  
  133. lbC0001DA:
  134.     moveq    #0,d1
  135. lbC0001DC:
  136.     add.l    d7,d7
  137.     beq.b    lbC000194
  138. lbC0001E0:
  139.     addx.w    d1,d1
  140.     dbra    d0,lbC0001DC
  141.     rts
  142.  
  143. lbC0001E8:
  144.     lea    (lbL000276,pc),a1
  145.     moveq    #3,d2
  146. lbC0001EE:
  147.     bsr.b    lbC0001B4
  148.     dbcc    d2,lbC0001EE
  149.     moveq    #0,d4
  150.     moveq    #0,d1
  151.     move.b    (1,a1,d2.w),d0
  152.     ext.w    d0
  153.     bmi.b    lbC000202
  154.     bsr.b    lbC0001DA
  155. lbC000202:
  156.     move.b    (6,a1,d2.w),d4
  157.     add.w    d1,d4
  158.     beq.b    lbC000228
  159.     lea    (lbL000280,pc),a1
  160.     moveq    #1,d2
  161. lbC000210:
  162.     bsr.b    lbC0001B4
  163.     dbcc    d2,lbC000210
  164.     moveq    #0,d1
  165.     move.b    (1,a1,d2.w),d0
  166.     ext.w    d0
  167.     bsr.b    lbC0001DA
  168.     add.w    d2,d2
  169.     add.w    (6,a1,d2.w),d1
  170.     bra.b    lbC00023C
  171.  
  172. lbC000228:
  173.     moveq    #0,d1
  174.     moveq    #5,d0
  175.     moveq    #0,d2
  176.     bsr.b    lbC0001B4
  177.     bcc.b    lbC000238
  178.     moveq    #8,d0
  179.     moveq    #$40,d2
  180. lbC000238:
  181.     bsr.b    lbC0001DA
  182.     add.w    d2,d1
  183. lbC00023C:
  184.     lea    (2,a6,d4.w),a1
  185.     adda.w    d1,a1
  186.     move.b    -(a1),-(a6)
  187. lbC000244:
  188.     move.b    -(a1),-(a6)
  189.     dbra    d4,lbC000244
  190.     bra.w    lbC00015C
  191.  
  192.         dc.l    $7FFF000E,$FF0007,$70002,$30001,$30001
  193. lbL000262    dc.l    269,14,7,4,1
  194. lbL000276    dc.b    9,1,0,255,255,8,4,2,1,0
  195. lbL000280    dc.b    11,4,7,0,1,32,0,0,0,32
  196.         end
  197.  
  198.